﻿/***********************************************************************************************//**
*\n  @file       test_sd.c
*\n  @brief      测试SD卡的容量
*\n  @details
*\n -----------------------------------------------------------------------------------
*\n  文件说明：
*\n       1. 测试SD卡的容量
*\n       
*\n -----------------------------------------------------------------------------------
*\n  版本:   修改人:       修改日期:        描述:
*\n  V0.01 罗先能        2019.10.21   创建
*\n 
***************************************************************************************************/

/**************************************************************************************************
* 头文件
***************************************************************************************************/
#include <stdio.h>                                                                                                                  
#include <stdlib.h>
#include <unistd.h>
#include <sys/vfs.h>


/**************************************************************************************************
* 宏定义、结构定义
***************************************************************************************************/


/**************************************************************************************************
* 全局变量声明、定义
***************************************************************************************************/


/**************************************************************************************************
* 私有变量声明、定义
***************************************************************************************************/
char path[] = "/mnt/sd/";


/**************************************************************************************************
* 全局函数声明、定义
***************************************************************************************************/
int main()
{
	int ret;
	struct statfs diskInfo;

	ret = statfs(path, &diskInfo);
	if (0 != ret)
	{
		printf("statfs() error\n");
		return -1;
	}

	unsigned long long blocksize = diskInfo.f_bsize;	            	//每个block里包含的字节数
	unsigned long long totalsize = blocksize * diskInfo.f_blocks; 		//总的字节数，f_blocks为block的数目
	printf("Total_size =  = %llu MB \n",  totalsize>>20);
	
	unsigned long long freeDisk = diskInfo.f_bfree * blocksize;			//剩余空间的大小
	unsigned long long availableDisk = diskInfo.f_bavail * blocksize; 	//可用空间大小
	printf("Disk_free = %llu MB, Disk_available = %llu MB\n", freeDisk>>20,  availableDisk>>20);

}



